package resultado;

import java.util.List;
import java.util.Random;

import dominio.Planta;
import dominio.Usuario;

public class PremioPlanta implements Resultado {
	private String mensajeResultado;
	
	private String plantasMuertasMsg;
	private String zombieDeadName;
	public PremioPlanta(String plantasPerdidas, String nomZombieMuerto){
		this.plantasMuertasMsg = plantasPerdidas;
		this.zombieDeadName = nomZombieMuerto;
	}
	public String getMensajeResultado() {
		return mensajeResultado;
	}


	public void setMensajeResultado(String mensajeResultado) {
		this.mensajeResultado = mensajeResultado;
	}

	public PremioPlanta() {
		
	}

	
	/**
	 * Implementacion equitativa del random Se hace uso de la clase random y su
	 * metodo nextInt
	 * 
	 * @return Planta
	 */
	public Planta elegirRandomPlanta(List<Planta> plantas) {
		Random rand = new Random();
		int randomPick = rand.nextInt(plantas.size()); // obtengo un index
															// valido
		Planta plantaPremio = plantas.get(randomPick);
		plantas.remove(randomPick);
		return plantaPremio;
	}

	/**
	 * Implementacion no equitativa del random, se beneficia a las primeras
	 * plantas de una lista, particularmente a la primera. Permite un balance
	 * más interesante. Ej, hacer que el orden de las plantas en la lista
	 * corresponda a su potencia .
	 * 
	 * @return Planta
	 */
	public Planta elegirRandomPlantaPrimerasEnLaListaBeneficiadas(List<Planta> plantas) {
		for (Planta planta : plantas) {
			double randomPicker = Math.random();
			if (randomPicker > 0.6) {
				Planta plantaPremio = planta;
				plantas.remove(planta);
				return plantaPremio;
			}
		}
		Planta plantaPremio = plantas.get(0).makeClone();
		plantas.remove(0);
		return plantaPremio;
	}
	
	@Override
	public void notificar(Usuario usuario, List<Planta>plantasAElegir) {
		if(plantasAElegir.isEmpty()){
			this.mensajeResultado = " Has matado al zombie " + this.zombieDeadName + " \n no has podido ganar un plantin! "  + " para tu jardinZen! \n" + " ya tienes todas las plantas posibles! \n" + plantasMuertasMsg; 

		}else{
			Planta planta =  this.elegirRandomPlanta(plantasAElegir);
			
			usuario.agregarPlantaZen(planta);
			this.mensajeResultado = " Has matado al zombie " + this.zombieDeadName + " \n y has ganado  un plantin " + planta.getNombre() + " para tu jardinZen! \n" + plantasMuertasMsg; 
			
		}
		
	}


	
}
